package com.youlu.campus.service.pay;

import com.youlu.campus.entity.CaInfo;
import com.youlu.campus.entity.PayCategoryConfig;
import com.youlu.campus.entity.UserPO;
import com.youlu.campus.entity.VO.req.ShoppingCartComputeReq;
import com.youlu.campus.entity.VO.res.FrontCategory;
import com.youlu.campus.entity.VO.res.ItemCategoryV2Res;
import com.youlu.campus.entity.VO.res.ShoppingCartComputeRes;
import com.youlu.campus.entity.VO.res.UserItemBuyV2Res;

import java.util.Date;
import java.util.List;

public interface UserPurchaseCaService {
    /**
     * 获取分类的商品列表
     *
     * @param acitivityId
     * @param categoryId
     * @return
     */
    ItemCategoryV2Res getItems(String acitivityId, String categoryId, UserPO userPO);

    /**
     * 获取用户商品购买主页信息
     *
     * @param activityId
     * @return
     */
    UserItemBuyV2Res getIndexInfo(UserPO userPO, String activityId);

    ItemCategoryV2Res getItemCategory(String type, String activityId);

    /**
     * 获取前端类目
     *
     * @param activityId
     * @return
     */
    List<FrontCategory> getFrontCategories(String activityId, UserPO userPO);

    /**
     * 购物车计算价格
     *
     * @param r
     * @return
     */
    ShoppingCartComputeRes computeCartFee(ShoppingCartComputeReq r);

    /**
     * 更新商品购买记录
     *
     * @param orderNo
     * @param date
     */
    void updateItemBuyRecord(String orderNo, Date date);

    /**
     * 删除商品购买记录
     *
     * @param activityId
     * @param userId
     * @param itemId
     */
    void deleteItemBuyRecord(String activityId, String userId, String itemId);

    /**
     * 更新商品分类购买记录
     *
     * @param orderNo
     * @param date
     */
    void updateCategoryBuyRecord(String orderNo, Date date);

    /**
     * 删除商品分类购买记录
     *
     * @param activityId
     * @param userId
     * @param itemId
     */
    void deleteCategoryBuyRecord(String activityId, String userId, String itemId);

    /**
     * 获取购物车商品
     *
     * @param activityId
     * @return
     */
    List<CaInfo> getShoppingCartItems(String activityId, UserPO userPO);

    /**
     * 获取商品taskBizType
     *
     * @param c
     * @return
     */
    String getItemTaskBizType(CaInfo c);

    /**
     * 获取用户的证书序列ID列表
     *
     * @param aid
     * @param userId
     * @param mobile
     * @param openId
     * @return
     */
    List<String> getUserCaGroupId(String aid, String userId, String mobile, String openId);

    /**
     * 获取用户证书等级
     *
     * @param aid
     * @param userId
     * @param mobile
     * @param openId
     * @return
     */
    List<String> getUserCaLevels(String aid, String userId, String mobile, String openId);

    /**
     *  获取默认分类
     * @param activityId
     * @returngetDefaultCategory
     */
    List<PayCategoryConfig> getDefaultCategory(String activityId,String userId,List<String> groupIds);
}
